﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ProyectoPractico
{
    class PesosCapa
    {
        //atributos
        private double[,] pesosPorNeuronas;//esta matriz va a representar Filas=Neuronas   Columnas=Pesos
        private int cantNeuronas = 0;
        private int cantPesos = 0;


        //métodos
        //PesosCapa-----------------------------------------------------------------------------------------------------------------------
        public PesosCapa(int newronas)
        {//, int pesos){//este es el constructor de la clase            
            cantNeuronas = newronas;
            cantPesos = newronas;
            pesosPorNeuronas = new double[newronas, newronas];

            for (int neuronaTemp = 0; neuronaTemp < newronas; neuronaTemp++)
            {// con estos for anidados inicializo la matriz de pesos
                for (int pesoTemp = 0; pesoTemp < newronas; pesoTemp++)
                {
                    pesosPorNeuronas[neuronaTemp, pesoTemp] = 1;
                }
            }
        }

        //getPeso-----------------------------------------------------------------------------------------------------------------------
        public double getPeso(int neuronaT, int pesoReq)
        {// este metodo devuelve el peso especificado de una neurona identificada
            return pesosPorNeuronas[neuronaT, pesoReq];
        }

        //setPeso-----------------------------------------------------------------------------------------------------------------------
        public void setPeso(int neuronaT, int pesoT, double newPeso)
        {//este metodo guarda el peso deseado de una neurona debidamente identificada
            pesosPorNeuronas[neuronaT, pesoT] = newPeso;
        }

        //guardarPesos-----------------------------------------------------------------------------------------------------------------------
        public void guardarPesos(string nombreArchivo)
        {
            FileStream fileStream = new FileStream(nombreArchivo, FileMode.Create, FileAccess.Write);
            StreamWriter archivo = new StreamWriter(fileStream);
            for (int a = 0; a < cantNeuronas; a++)
            {
                for (int b = 0; b < cantPesos; b++)
                {
                    string guardar = pesosPorNeuronas[a, b].ToString();
                    archivo.Write(guardar);
                    archivo.Write(Environment.NewLine);
                }
            }
            archivo.Dispose();
            archivo.Close();
            fileStream.Close();

        }

        //cargarPesos-----------------------------------------------------------------------------------------------------------------------
        public void cargarPesos(string nombreArchivo)
        {
            FileStream fileStream = new FileStream(nombreArchivo, FileMode.Open, FileAccess.Read);
            StreamReader archivo = new StreamReader(fileStream);
            for (int a = 0; a < cantNeuronas; a++)
            {
                for (int b = 0; b < cantPesos; b++)
                {
                    pesosPorNeuronas[a, b] = double.Parse(archivo.ReadLine());
                }
            }
            archivo.Close();
        }

    }//fin de la clase
}
